/*
 * Listas.h
 *
 *  Created on: 22/08/2012
 *      Author: vitorcasadei
 */
#include <cstdio>
#include <string>
#include <fstream>
#include "Vacina.h"
#include "Doenca.h"
#include "Cliente.h"
#include "Pesquisa.h"
#include "Pacote.h"

using std::string;

class Listas{

    private:
		list<Vacina> lVacinas;
		list<Doenca> lDoencas;
		list<Cliente> lClientes;
        
        list<Vacina>::iterator iVacina;
        list<Doenca>::iterator iDoenca;
        list<Cliente>::iterator iCliente;
        
        Pacote pacote;
        
        int quantidadeVacinas;
        int quantidadeDoencas;
        int quantidadeClientes;
		
    public:
        Listas();
        bool selecionarCliente(string cpf);
        bool selecionarClientePos(string cpf);
        void exibirTodosClientes();
        bool selecionarClientePos(int pos);
        void inserirCliente(string nome, string cpf);
        bool editarCliente(string novoNome, string novoCPF);
        bool excluirCliente();
        bool selecionarPaciente(int codigo);
        bool selecionarVacina(int pk);
        void exibirCarteiraPaciente();
        void exibirAgendaPaciente();
        void marcarVacinaAplicada(int pos);
        void exibirTodasVacinas();
        bool adicionarVacinaPacote();
        bool removerVacinaPacote(int pos);
        void exibirVacinasSugeridas(int idade);
        bool selecionarVacinaPacote();
        bool buscarVacinaDescricao(string descricao);
        bool buscarVacinaPreco(double preco);
        bool buscarVacinasPos(int pos);
        bool inserirNovaVacina(string descricao, int idade, double preco);
        bool inserirNovaDoenca(string descricao, string sintomas, string ocnsequencias, int pk);
        void excluirVacina();
        bool excluirDoenca();
        int menuPrincipal();
        int menuSecaoClientes();
        int menuBuscarCliente();
        int menuSecaoPacientes();
        bool menuBuscarPacientes();
        int menuCarteira();
        int menuAgenda();
        int menuExibirTodosPacientes();
        int menuSecaoPacotes();
        int menuSelecionarPaciente();
        int menuAdicionarRemoverVacinaPacote();
        int menuVacinasSugeridas(int idade);
        bool menuExibirTodosClientes();
        int menuSecaoVacinasDoencas();
        int menuBuscarVacinas();
        int menuExibirTodasVacinas();
        void menuInserirNovoCliente();
        int menuClienteSelecionado();
        void menuEditarCliente();
        bool menuBuscarClienteCPF();
        void menuAdicionarPaciente();
        int menuPacienteSelecionado();
        void menuEditarPaciente();
        void excluirPaciente();
        void adicionarPaciente(string nome, Data dataNasc);
        void Listas::carregarArquivos();
        friend ostream &operator<< (ostream &out, Listas &lista);
        friend istream &operator>> (istream &in, Listas &lista);

	/*private:
		list<Vacina> lVacinas;
		list<Doenca> lDoencas;
		list<Cliente> lClientes;

	public:

		Listas();

		//Métodos da lista de vacina
		void inserirVacinaLista();
		void alterarVacinaLista();
		void excluirVacinaLista();
		void consultarVacinaLista();
		//void consultarVacinaLista();

		//Métodos da lista de Doenca
		void inserirDoencaLista();
		void alterarDoencaLista();
		void excluirDoencaLista();
		//void consultarVacinaLista();

		//Métodos da lista de Cliente
		void inserirClienteLista();
		void alterarClienteLista();
		void excluirClienteLista();
		void pesquisarClienteLista(); //
		*/
};
